home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / m92.c < prev    next >
C/C++ Source or Header  |  2000-04-29  |  79KB  |  2,073 lines

  1. /*****************************************************************************
  2.  
  3.     Irem M92 system games:
  4.  
  5.     Blademaster    (World)                        (c) 1991 Irem Corp
  6.     Gunforce (World)                M92-A    (c) 1991 Irem Corp
  7.     Gunforce (USA)                    M92-A    (c) 1991 Irem America Corp
  8.     Lethal Thunder (World)                    (c) 1991 Irem Corp
  9.     Thunder Blaster (Japan)                    (c) 1991 Irem Corp
  10.     Hook (World)                            (c) 1992 Irem Corp
  11.     Hook (USA)                                (c) 1992 Irem America Corp
  12.     Mystic Riders (World)                    (c) 1992 Irem Corp
  13.     Gun Hohki (Japan)                        (c) 1992 Irem Corp
  14.     Undercover Cops    (World)                    (c) 1992 Irem Corp
  15.     Undercover Cops    (Japan)                    (c) 1992 Irem Corp
  16.     R-Type Leo (Japan)                        (c) 1992 Irem Corp
  17.     Major Title 2 (World)            M92-F    (c) 1992 Irem Corp
  18.     The Irem Skins Game (USA Set 1)    M92-F    (c) 1992 Irem America Corp
  19.     The Irem Skins Game (USA Set 2)    M92-F    (c) 1992 Irem America Corp
  20.     In The Hunt    (World)                M92-E    (c) 1993 Irem Corp
  21.     In The Hunt    (USA)                M92-E    (c) 1993 Irem Corp
  22.     Kaitei Daisensou (Japan)        M92-E    (c) 1993 Irem Corp
  23.     Ninja Baseball Batman (USA)                (c) 1993 Irem America Corp
  24.     Yakyuu Kakutou League-Man (Japan)        (c) 1993 Irem Corp
  25.     Perfect Soldiers (Japan)        M92-G    (c) 1993 Irem Corp
  26.  
  27.     Once decrypted, Irem M97 games will be very close to this hardware.
  28.  
  29. System notes:
  30.     Each game has an encrypted sound cpu (see m97.c), the sound cpu and
  31.     the sprite chip are on the game board rather than the main board and
  32.     can differ between games.
  33.  
  34.     Irem Skins Game has an eeprom and ticket payout(?).
  35.     R-Type Leo & Lethal Thunder have a memory card.
  36.  
  37.     Many games use raster IRQ's for special video effects, eg,
  38.         * Scrolling water in Undercover Cops
  39.         * Score display in R-Type Leo
  40.  
  41.     These are slow to emulate, and can be turned on/off by pressing
  42.     F1 - they are on by default.
  43.  
  44.  
  45. Glitch list!
  46.  
  47.     Gunforce:
  48.         Animated water sometimes doesn't appear on level 5 (but it
  49.         always appears if you cheat and jump straight to the level).
  50.         Almost certainly a core bug.
  51.  
  52.     R-Type Leo:
  53.         Title screen is incorrect, it uses mask sprites but I can't find
  54.         how the effect is turned on/off
  55.         Crashes fixed via a kludge - cpu bug.
  56.  
  57.     Irem Skins:
  58.         Mask sprite on title screen?
  59.         Sprites & tiles written with bad colour values - cpu bug?
  60.         Eeprom load/save not yet implemented - when done, MT2EEP should
  61.           be removed from the ROM definition.
  62.  
  63.     Blade Master:
  64.         Sprite list register isn't updated in service mode.
  65.  
  66.     Ninja Baseball:
  67.         Very picky about interrupts..
  68.         Doesn't work!
  69.  
  70.     Emulation by Bryan McPhail, mish@tendril.co.uk
  71.     Thanks to Chris Hardy and Olli Bergmann too!
  72.  
  73.  
  74. Irem Custom V33 CPU:
  75.  
  76. Gunforce                        Nanao     08J27261A 011 9106KK701
  77. Quiz F-1 1,2 Finish              Nanao    08J27291A4 014 9147KK700
  78. Skins Game                        Nanao     08J27291A7
  79. R-Type Leo                        Irem     D800001A1
  80. In The Hunt                        Irem     D8000011A1
  81. Gun Hohki                                      16?
  82. Risky Challenge/Gussun Oyoyo             D8000019A1
  83. Shisensho II                             D8000020A1 023 9320NK700
  84. Perfect Soldiers                        D8000022A1
  85.  
  86. Nanao Custom parts:
  87.  
  88. GA20    Sample player
  89. GA21    Tilemaps } Used in combination
  90. GA22    Tilemaps }
  91. GA23    Sprites (Gun Force)
  92. GA30     Tilemaps
  93. GA31    Tilemaps
  94. GA32    Sprites (Fire Barrel)
  95.  
  96. *****************************************************************************/
  97.  
  98. #include "driver.h"
  99. #include "vidhrdw/generic.h"
  100. #include "m92.h"
  101.  
  102. static int m92_irq_vectorbase,m92_vblank;
  103. static unsigned char *m92_eeprom,*m92_ram;
  104.  
  105. #define M92_IRQ_0 ((m92_irq_vectorbase+0)/4)  /* VBL interrupt*/
  106. #define M92_IRQ_1 ((m92_irq_vectorbase+4)/4)  /* End of VBL interrupt?? */
  107. #define M92_IRQ_2 ((m92_irq_vectorbase+8)/4)  /* Raster interrupt */
  108. #define M92_IRQ_3 ((m92_irq_vectorbase+12)/4) /* Sprite buffer complete interrupt? */
  109.  
  110. /* From vidhrdw/m92.c */
  111. WRITE_HANDLER( m92_spritecontrol_w );
  112. WRITE_HANDLER( m92_spritebuffer_w );
  113. READ_HANDLER( m92_vram_r );
  114. WRITE_HANDLER( m92_vram_w );
  115. WRITE_HANDLER( m92_pf1_control_w );
  116. WRITE_HANDLER( m92_pf2_control_w );
  117. WRITE_HANDLER( m92_pf3_control_w );
  118. WRITE_HANDLER( m92_master_control_w );
  119. int m92_vh_start(void);
  120. void m92_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  121. void m92_vh_raster_partial_refresh(struct osd_bitmap *bitmap,int start_line,int end_line);
  122.  
  123. extern int m92_raster_irq_position,m92_spritechip,m92_raster_machine,m92_raster_enable;
  124. extern unsigned char *m92_vram_data,*m92_spritecontrol;
  125.  
  126. extern int m92_game_kludge;
  127.  
  128. /*****************************************************************************/
  129.  
  130. static READ_HANDLER( status_port_r )
  131. {
  132. //logerror("%06x: status %04x\n",cpu_get_pc(),offset);
  133.  
  134. /*
  135.  
  136.     Gunforce waits on bit 1 (word) going high on bootup, just after
  137.     setting up interrupt controller.
  138.  
  139.     Gunforce reads bit 2 (word) on every coin insert, doesn't seem to
  140.     do much though..
  141.  
  142.     Ninja Batman polls this.
  143.  
  144.     R-Type Leo reads it now & again..
  145.  
  146. */
  147.     if (m92_game_kludge==1)
  148.         m92_ram[0x53]=1; /* FIXES RTYPE LEO! */
  149.  
  150.     return 0xff;
  151. }
  152.  
  153. static READ_HANDLER( m92_eeprom_r )
  154. {
  155.     unsigned char *RAM = memory_region(REGION_USER1);
  156. //    logerror("%05x: EEPROM RE %04x\n",cpu_get_pc(),offset);
  157.  
  158.     return RAM[offset/2];
  159. }
  160.  
  161. static WRITE_HANDLER( m92_eeprom_w )
  162. {
  163.     unsigned char *RAM = memory_region(REGION_USER1);
  164. //    logerror("%05x: EEPROM WR %04x\n",cpu_get_pc(),offset);
  165.     RAM[offset/2]=data;
  166. }
  167.  
  168. static WRITE_HANDLER( m92_coincounter_w )
  169. {
  170.     if (offset==0) {
  171.         coin_counter_w(0,data & 0x01);
  172.         coin_counter_w(1,data & 0x02);
  173.  
  174.         if (m92_game_kludge==2) {
  175.             unsigned char *RAM = memory_region(REGION_CPU1);
  176.             RAM[0x1840]=0x90; /* For Leagueman */
  177.             RAM[0x1841]=0x90;
  178.             RAM[0x830]=0x90;
  179.             RAM[0x831]=0x90;
  180.         }
  181.  
  182.         /* Bit 0x8 is Motor(?!), used in Hook, In The Hunt, UCops */
  183.         /* Bit 0x8 is Memcard related in RTypeLeo */
  184.         /* Bit 0x40 set in Blade Master test mode input check */
  185.     }
  186. #if 0
  187.     if (/*offset==0 &&*/ data!=0) {
  188.         char t[16];
  189.         sprintf(t,"%02x",data);
  190.         usrintf_showmessage(t);
  191.     }
  192. #endif
  193. }
  194.  
  195. static WRITE_HANDLER( m92_unknown_w )
  196. {
  197. #if 0
  198.     static int d[2];
  199.     d[offset]=data;
  200.     if (1/*offset==1*/) {
  201.         char t[16];
  202.         sprintf(t,"%02x",d[0] | (d[1]<<8));
  203.         usrintf_showmessage(t);
  204.     }
  205. #endif
  206. }
  207.  
  208. static WRITE_HANDLER( m92_bankswitch_w )
  209. {
  210.     unsigned char *RAM = memory_region(REGION_CPU1);
  211.  
  212.     logerror("%04x: Bank %04x (%02x)\n",cpu_get_pc(),data,offset);
  213.     if (offset==1) return; /* Unused top byte */
  214.  
  215.     cpu_setbank(1,&RAM[0x100000 + ((data&0x7)*0x10000)]);
  216. }
  217.  
  218. static READ_HANDLER( m92_port_4_r )
  219. {
  220.     if (m92_vblank) return readinputport(4) | 0;
  221.     return readinputport(4) | 0x80;
  222. }
  223.  
  224. static WRITE_HANDLER( m92_soundlatch_w )
  225. {
  226.     if (offset==0) soundlatch_w(0,data);
  227.     /* Interrupt second V33 */
  228. }
  229.  
  230. /*****************************************************************************/
  231.  
  232. static struct MemoryReadAddress readmem[] =
  233. {
  234.     { 0x00000, 0x9ffff, MRA_ROM },
  235.     { 0xa0000, 0xbffff, MRA_BANK1 },
  236.     { 0xc0000, 0xcffff, MRA_BANK2 }, /* Mirror of rom:  Used by In The Hunt as protection */
  237.     { 0xd0000, 0xdffff, m92_vram_r },
  238.     { 0xe0000, 0xeffff, MRA_RAM },
  239.     { 0xf0000, 0xf3fff, m92_eeprom_r }, /* Eeprom, Major Title 2 only */
  240.     { 0xf8000, 0xf87ff, MRA_RAM },
  241.     { 0xf8800, 0xf8fff, paletteram_r },
  242.     { 0xffff0, 0xfffff, MRA_ROM },
  243.     { -1 }    /* end of table */
  244. };
  245.  
  246. static struct MemoryWriteAddress writemem[] =
  247. {
  248.     { 0x00000, 0xbffff, MWA_ROM },
  249.     { 0xd0000, 0xdffff, m92_vram_w, &m92_vram_data },
  250.     { 0xe0000, 0xeffff, MWA_RAM, &m92_ram }, /* System ram */
  251.     { 0xf0000, 0xf3fff, m92_eeprom_w, &m92_eeprom }, /* Eeprom, Major Title 2 only */
  252.     { 0xf8000, 0xf87ff, MWA_RAM, &spriteram, &spriteram_size },
  253.     { 0xf8800, 0xf8fff, paletteram_xBBBBBGGGGGRRRRR_w, &paletteram },
  254.     { 0xf9000, 0xf900f, m92_spritecontrol_w, &m92_spritecontrol },
  255.     { 0xf9800, 0xf9801, m92_spritebuffer_w },
  256.     { 0xffff0, 0xfffff, MWA_ROM },
  257.     { -1 }    /* end of table */
  258. };
  259.  
  260. static struct MemoryReadAddress lethalth_readmem[] =
  261. {
  262.     { 0x00000, 0x7ffff, MRA_ROM },
  263.     { 0x80000, 0x8ffff, m92_vram_r },
  264.     { 0xe0000, 0xeffff, MRA_RAM },
  265.     { 0xf8000, 0xf87ff, MRA_RAM },
  266.     { 0xf8800, 0xf8fff, paletteram_r },
  267.     { 0xffff0, 0xfffff, MRA_ROM },
  268.     { -1 }    /* end of table */
  269. };
  270.  
  271. static struct MemoryWriteAddress lethalth_writemem[] =
  272. {
  273.     { 0x00000, 0x7ffff, MWA_ROM },
  274.     { 0x80000, 0x8ffff, m92_vram_w, &m92_vram_data },
  275.     { 0xe0000, 0xeffff, MWA_RAM, &m92_ram }, /* System ram */
  276.     { 0xf8000, 0xf87ff, MWA_RAM, &spriteram, &spriteram_size },
  277.     { 0xf8800, 0xf8fff, paletteram_xBBBBBGGGGGRRRRR_w, &paletteram },
  278.     { 0xf9000, 0xf900f, m92_spritecontrol_w, &m92_spritecontrol },
  279.     { 0xf9800, 0xf9801, m92_spritebuffer_w },
  280.     { 0xffff0, 0xfffff, MWA_ROM },
  281.     { -1 }    /* end of table */
  282. };
  283.  
  284. static struct IOReadPort readport[] =
  285. {
  286.     { 0x00, 0x00, input_port_0_r }, /* Player 1 */
  287.     { 0x01, 0x01, input_port_1_r }, /* Player 2 */
  288.     { 0x02, 0x02, m92_port_4_r },   /* Coins & VBL */
  289.     { 0x03, 0x03, input_port_7_r }, /* Dip 3 */
  290.     { 0x04, 0x04, input_port_6_r }, /* Dip 2 */
  291.     { 0x05, 0x05, input_port_5_r }, /* Dip 1 */
  292.     { 0x06, 0x06, input_port_2_r }, /* Player 3 */
  293.     { 0x07, 0x07, input_port_3_r }, /* Player 4 */
  294.     { 0x08, 0x09, status_port_r },  /* ? */
  295.     { -1 }    /* end of table */
  296. };
  297.  
  298. static struct IOWritePort writeport[] =
  299. {
  300.     { 0x00, 0x01, m92_soundlatch_w },
  301.     { 0x02, 0x03, m92_coincounter_w },
  302.     { 0x20, 0x21, m92_bankswitch_w },
  303.     { 0x40, 0x43, MWA_NOP }, /* Interrupt controller, only written to at bootup */
  304.     { 0x80, 0x87, m92_pf1_control_w },
  305.     { 0x88, 0x8f, m92_pf2_control_w },
  306.     { 0x90, 0x97, m92_pf3_control_w },
  307.     { 0x98, 0x9f, m92_master_control_w },
  308.     { 0xc0, 0xc1, m92_unknown_w },
  309.     { -1 }    /* end of table */
  310. };
  311.  
  312. /******************************************************************************/
  313.  
  314. #if 0
  315. static struct MemoryReadAddress sound_readmem[] =
  316. {
  317.     { 0x00000, 0x1ffff, MRA_ROM },
  318.     { 0xffff0, 0xfffff, MRA_ROM },
  319.     { -1 }    /* end of table */
  320. };
  321.  
  322. static struct MemoryWriteAddress sound_writemem[] =
  323. {
  324.     { 0x00000, 0x1ffff, MWA_ROM },
  325.     { 0xffff0, 0xfffff, MWA_ROM },
  326.     { -1 }    /* end of table */
  327. };
  328. #endif
  329.  
  330. /******************************************************************************/
  331.  
  332. INPUT_PORTS_START( bmaster )
  333.     PORT_PLAYER1_2BUTTON_JOYSTICK
  334.     PORT_PLAYER2_2BUTTON_JOYSTICK
  335.     PORT_UNUSED
  336.     PORT_UNUSED
  337.     PORT_COINS_VBLANK
  338.     PORT_SYSTEM_DIPSWITCH
  339.  
  340.     PORT_START    /* Dip switch bank 1 */
  341.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  342.     PORT_DIPSETTING(    0x00, "1" )
  343.     PORT_DIPSETTING(    0x03, "2" )
  344.     PORT_DIPSETTING(    0x02, "3" )
  345.     PORT_DIPSETTING(    0x01, "4" )
  346.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  347.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  348.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  349.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  350.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  351.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  352.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  353.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  354.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  355.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  356.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  357.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  358.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  359.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  360.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  361.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  362.  
  363.     PORT_START    /* Dip switch bank 2 */
  364.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  365.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  366.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  367.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  368.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  369.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  370.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  371.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  372.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  373.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  374.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  375.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  376.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  377.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  378.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  379.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  380.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  381.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  382.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  383.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  384.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  385.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  386.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  387.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  388. INPUT_PORTS_END
  389.  
  390. INPUT_PORTS_START( gunforce )
  391.     PORT_PLAYER1_2BUTTON_JOYSTICK
  392.     PORT_PLAYER2_2BUTTON_JOYSTICK
  393.     PORT_UNUSED
  394.     PORT_UNUSED
  395.     PORT_COINS_VBLANK
  396.     PORT_SYSTEM_DIPSWITCH
  397.  
  398.     PORT_START    /* Dip switch bank 1 */
  399.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  400.     PORT_DIPSETTING(    0x02, "2" )
  401.     PORT_DIPSETTING(    0x03, "3" )
  402.     PORT_DIPSETTING(    0x01, "4" )
  403.     PORT_DIPSETTING(    0x00, "5" )
  404.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  405.     PORT_DIPSETTING(    0x00, "Very Easy" )
  406.     PORT_DIPSETTING(    0x08, "Easy" )
  407.     PORT_DIPSETTING(    0x0c, "Normal" )
  408.     PORT_DIPSETTING(    0x04, "Hard" )
  409.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
  410.     PORT_DIPSETTING(    0x00, "15000 35000 75000 120000" )
  411.     PORT_DIPSETTING(    0x10, "20000 40000 90000 150000" )
  412.     PORT_DIPNAME( 0x20, 0x20, "Allow Continue" )
  413.     PORT_DIPSETTING(    0x20, DEF_STR( No ) )
  414.     PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
  415.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) )
  416.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  417.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  418.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  419.  
  420.     PORT_UNUSED    /* Game manual only mentions 2 dips */
  421. INPUT_PORTS_END
  422.  
  423. INPUT_PORTS_START( lethalth )
  424.     PORT_PLAYER1_2BUTTON_JOYSTICK
  425.     PORT_PLAYER2_2BUTTON_JOYSTICK
  426.     PORT_UNUSED
  427.     PORT_UNUSED
  428.     PORT_COINS_VBLANK
  429.     PORT_SYSTEM_DIPSWITCH
  430.  
  431.     PORT_START    /* Dip switch bank 1 */
  432.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  433.     PORT_DIPSETTING(    0x02, "2" )
  434.     PORT_DIPSETTING(    0x03, "3" )
  435.     PORT_DIPSETTING(    0x01, "4" )
  436.     PORT_DIPSETTING(    0x00, "5" )
  437.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  438.     PORT_DIPSETTING(    0x00, "Very Easy" )
  439.     PORT_DIPSETTING(    0x08, "Easy" )
  440.     PORT_DIPSETTING(    0x0c, "Normal" )
  441.     PORT_DIPSETTING(    0x04, "Hard" )
  442.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  443.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  444.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  445.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  446.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  447.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  448.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  449.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  450.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  451.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  452.  
  453.     PORT_START    /* Dip switch bank 2 */
  454.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  455.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  456.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  457.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  458.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  459.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  460.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  461.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  462.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  463.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  464.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  465.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  466.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  467.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  468.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  469.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  470.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  471.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  472.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  473.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  474.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  475.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  476.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  477.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  478. INPUT_PORTS_END
  479.  
  480. INPUT_PORTS_START( hook )
  481.     PORT_PLAYER1_2BUTTON_JOYSTICK
  482.     PORT_PLAYER2_2BUTTON_JOYSTICK
  483.     PORT_PLAYER3_2BUTTON_JOYSTICK
  484.     PORT_PLAYER4_2BUTTON_JOYSTICK
  485.     PORT_COINS_VBLANK
  486.     PORT_SYSTEM_DIPSWITCH
  487.  
  488.     PORT_START    /* Dip switch bank 1 */
  489.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  490.     PORT_DIPSETTING(    0x00, "1" )
  491.     PORT_DIPSETTING(    0x03, "2" )
  492.     PORT_DIPSETTING(    0x02, "3" )
  493.     PORT_DIPSETTING(    0x01, "4" )
  494.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  495.     PORT_DIPSETTING(    0x00, "Very Easy" )
  496.     PORT_DIPSETTING(    0x08, "Easy" )
  497.     PORT_DIPSETTING(    0x0c, "Normal" )
  498.     PORT_DIPSETTING(    0x04, "Hard" )
  499.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  500.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  501.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  502.     PORT_DIPNAME( 0x20, 0x00, "Any Button Starts" )
  503.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  504.     PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
  505.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
  506.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  507.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  508.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  509.  
  510.     PORT_START    /* Dip switch bank 2 */
  511.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
  512.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  513.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  514.     PORT_DIPNAME( 0x02, 0x02, "Number of Players" )
  515.     PORT_DIPSETTING(    0x02, "2 Players" )
  516.     PORT_DIPSETTING(    0x00, "4 Players" )
  517.     PORT_DIPNAME( 0x04, 0x04, "Coin Slots" )
  518.     PORT_DIPSETTING(    0x04, "Common Coins" )
  519.     PORT_DIPSETTING(    0x00, "Separate Coins" )
  520.     PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
  521.     PORT_DIPSETTING(    0x08, "Mode 1" )
  522.     PORT_DIPSETTING(    0x00, "Mode 2" )
  523. /* Coin Mode 1, todo Mode 2 */
  524.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) )
  525.     PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) )
  526.     PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) )
  527.     PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) )
  528.     PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) )
  529.     PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) )
  530.     PORT_DIPSETTING(    0x30, DEF_STR( 3C_2C ) )
  531.     PORT_DIPSETTING(    0x20, DEF_STR( 4C_3C ) )
  532.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  533.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_3C ) )
  534.     PORT_DIPSETTING(    0x90, DEF_STR( 1C_2C ) )
  535.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  536.     PORT_DIPSETTING(    0x70, DEF_STR( 1C_4C ) )
  537.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) )
  538.     PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
  539.     PORT_DIPSETTING(    0x10, "2 Start/1 Continue" )
  540.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  541. INPUT_PORTS_END
  542.  
  543. INPUT_PORTS_START( majtitl2 )
  544.     PORT_PLAYER1_2BUTTON_JOYSTICK
  545.     PORT_PLAYER2_2BUTTON_JOYSTICK
  546.     PORT_UNUSED
  547.     PORT_UNUSED
  548.     PORT_COINS_VBLANK
  549.     PORT_SYSTEM_DIPSWITCH
  550.  
  551.     PORT_START    /* Dip switch bank 1 */
  552.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  553.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  554.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  555.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  556.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  557.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  558.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  559.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  560.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  561.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  562.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  563.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  564.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  565.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  566.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  567.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  568.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  569.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  570.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  571.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  572.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  573.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  574.  
  575.     PORT_START    /* Dip switch bank 2 */
  576.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  577.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  578.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  579.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  580.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  581.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  582.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  583.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  584.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  585.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  586.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  587.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  588.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  589.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  590.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  591.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  592.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  593.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  594.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  595.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  596.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  597.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  598.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  599.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  600. INPUT_PORTS_END
  601.  
  602. INPUT_PORTS_START( mysticri )
  603.     PORT_PLAYER1_2BUTTON_JOYSTICK
  604.     PORT_PLAYER2_2BUTTON_JOYSTICK
  605.     PORT_UNUSED
  606.     PORT_UNUSED
  607.     PORT_COINS_VBLANK
  608.     PORT_SYSTEM_DIPSWITCH
  609.  
  610.     PORT_START    /* Dip switch bank 1 */
  611.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  612.     PORT_DIPSETTING(    0x02, "2" )
  613.     PORT_DIPSETTING(    0x03, "3" )
  614.     PORT_DIPSETTING(    0x01, "4" )
  615.     PORT_DIPSETTING(    0x00, "5" )
  616.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  617.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  618.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  619.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  620.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  621.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  622.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  623.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  624.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  625.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  626.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  627.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  628.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  629.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  630.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  631.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  632.  
  633.     PORT_START    /* Dip switch bank 2 */
  634.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  635.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  636.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  637.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  638.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  639.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  640.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  641.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  642.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  643.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  644.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  645.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  646.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  647.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  648.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  649.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  650.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  651.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  652.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  653.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  654.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  655.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  656.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  657.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  658. INPUT_PORTS_END
  659.  
  660. INPUT_PORTS_START( uccops )
  661.     PORT_PLAYER1_2BUTTON_JOYSTICK
  662.     PORT_PLAYER2_2BUTTON_JOYSTICK
  663.     PORT_PLAYER3_2BUTTON_JOYSTICK
  664.     PORT_UNUSED
  665.     PORT_COINS_VBLANK
  666.     PORT_SYSTEM_DIPSWITCH
  667.  
  668.     PORT_START    /* Dip switch bank 1 */
  669.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  670.     PORT_DIPSETTING(    0x00, "1" )
  671.     PORT_DIPSETTING(    0x03, "2" )
  672.     PORT_DIPSETTING(    0x02, "3" )
  673.     PORT_DIPSETTING(    0x01, "4" )
  674.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  675.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  676.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  677.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  678.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  679.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  680.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  681.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  682.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  683.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  684.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  685.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  686.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  687.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  688.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  689.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  690.  
  691.     PORT_START    /* Dip switch bank 2 */
  692.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  693.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  694.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  695.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  696.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  697.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  698.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  699.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  700.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  701.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  702.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  703.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  704.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  705.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  706.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  707.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  708.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  709.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  710.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  711.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  712.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  713.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  714.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  715.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  716. INPUT_PORTS_END
  717.  
  718. INPUT_PORTS_START( rtypeleo )
  719.     PORT_PLAYER1_2BUTTON_JOYSTICK
  720.     PORT_PLAYER2_2BUTTON_JOYSTICK
  721.     PORT_UNUSED
  722.     PORT_UNUSED
  723.     PORT_COINS_VBLANK
  724.     PORT_SYSTEM_DIPSWITCH
  725.  
  726.     PORT_START    /* Dip switch bank 1 */
  727.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  728.     PORT_DIPSETTING(    0x02, "2" )
  729.     PORT_DIPSETTING(    0x03, "3" )
  730.     PORT_DIPSETTING(    0x01, "4" )
  731.     PORT_DIPSETTING(    0x00, "5" )
  732.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  733.     PORT_DIPSETTING(    0x00, "Very Easy" )
  734.     PORT_DIPSETTING(    0x08, "Easy" )
  735.     PORT_DIPSETTING(    0x0c, "Normal" )
  736.     PORT_DIPSETTING(    0x04, "Hard" )
  737.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* Buy in/coin mode?? */
  738.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  739.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  740.     PORT_DIPNAME( 0x20, 0x20, "Allow Continue" )
  741.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  742.     PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
  743.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
  744.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  745.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  746.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  747.  
  748.     PORT_UNUSED    /* Game manual only mentions 2 dips */
  749. INPUT_PORTS_END
  750.  
  751. INPUT_PORTS_START( inthunt )
  752.     PORT_PLAYER1_2BUTTON_JOYSTICK
  753.     PORT_PLAYER2_2BUTTON_JOYSTICK
  754.     PORT_UNUSED
  755.     PORT_UNUSED
  756.     PORT_COINS_VBLANK
  757.     PORT_SYSTEM_DIPSWITCH
  758.  
  759.     PORT_START    /* Dip switch bank 1 */
  760.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  761.     PORT_DIPSETTING(    0x00, "2" )
  762.     PORT_DIPSETTING(    0x03, "3" )
  763.     PORT_DIPSETTING(    0x02, "4" )
  764.     PORT_DIPSETTING(    0x01, "5" )
  765.     PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
  766.     PORT_DIPSETTING(    0x00, "Very Easy" )
  767.     PORT_DIPSETTING(    0x08, "Easy" )
  768.     PORT_DIPSETTING(    0x0c, "Normal" )
  769.     PORT_DIPSETTING(    0x04, "Hard" )
  770.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) )
  771.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  772.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  773.     PORT_DIPNAME( 0x20, 0x20, "Any Button starts game" ) /* ? */
  774.     PORT_DIPSETTING(    0x00, DEF_STR( No ) )
  775.     PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
  776.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
  777.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  778.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  779.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  780.  
  781.     PORT_START    /* Dip switch bank 2 */
  782.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) )
  783.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  784.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  785.     PORT_DIPNAME( 0x02, 0x02, "Number of Players" )
  786.     PORT_DIPSETTING(    0x02, "2 Players" )
  787.     PORT_DIPSETTING(    0x00, "4 Players" )
  788.     PORT_DIPNAME( 0x04, 0x04, "Coin Slots" )
  789.     PORT_DIPSETTING(    0x04, "Common Coins" )
  790.     PORT_DIPSETTING(    0x00, "Seperate Coins" )
  791.     PORT_DIPNAME( 0x08, 0x08, "Coin Mode" )
  792.     PORT_DIPSETTING(    0x08, "Mode 1" )
  793.     PORT_DIPSETTING(    0x00, "Mode 2" )
  794. /* Coin Mode 1, todo Mode 2 */
  795.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coinage ) )
  796.     PORT_DIPSETTING(    0xa0, DEF_STR( 6C_1C ) )
  797.     PORT_DIPSETTING(    0xb0, DEF_STR( 5C_1C ) )
  798.     PORT_DIPSETTING(    0xc0, DEF_STR( 4C_1C ) )
  799.     PORT_DIPSETTING(    0xd0, DEF_STR( 3C_1C ) )
  800.     PORT_DIPSETTING(    0xe0, DEF_STR( 2C_1C ) )
  801.     PORT_DIPSETTING(    0x30, DEF_STR( 3C_2C ) )
  802.     PORT_DIPSETTING(    0x20, DEF_STR( 4C_3C ) )
  803.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  804.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_3C ) )
  805.     PORT_DIPSETTING(    0x90, DEF_STR( 1C_2C ) )
  806.     PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
  807.     PORT_DIPSETTING(    0x70, DEF_STR( 1C_4C ) )
  808.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_5C ) )
  809.     PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
  810.     PORT_DIPSETTING(    0x10, "2 Start/1 Continue" )
  811.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  812. INPUT_PORTS_END
  813.  
  814. INPUT_PORTS_START( nbbatman )
  815.     PORT_PLAYER1_2BUTTON_JOYSTICK
  816.     PORT_PLAYER2_2BUTTON_JOYSTICK
  817.     PORT_UNUSED
  818.     PORT_UNUSED
  819.     PORT_COINS_VBLANK
  820.     PORT_SYSTEM_DIPSWITCH
  821.  
  822.     PORT_START    /* Dip switch bank 1 */
  823.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  824.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  825.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  826.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  827.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  828.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  829.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  830.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  831.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  832.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  833.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  834.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  835.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  836.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  837.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  838.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  839.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  840.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  841.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  842.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  843.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  844.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  845.  
  846.     PORT_START    /* Dip switch bank 2 */
  847.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  848.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  849.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  850.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  851.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  852.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  853.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  854.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  855.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  856.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  857.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  858.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  859.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  860.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  861.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  862.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  863.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  864.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  865.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  866.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  867.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  868.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  869.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  870.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  871. INPUT_PORTS_END
  872.  
  873. INPUT_PORTS_START( psoldier )
  874.     PORT_START
  875.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
  876.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
  877.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
  878.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
  879.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  880.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
  881.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
  882.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
  883.  
  884.     PORT_START
  885.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
  886.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
  887.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
  888.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
  889.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  890.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
  891.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
  892.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
  893.  
  894.     PORT_UNUSED
  895.  
  896.     PORT_START /* Extra connector for kick buttons */
  897.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  898.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 )
  899.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 )
  900.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 )
  901.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
  902.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 )
  903.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 )
  904.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER2 )
  905.  
  906.     PORT_COINS_VBLANK
  907.     PORT_SYSTEM_DIPSWITCH
  908.  
  909.     PORT_START    /* Dip switch bank 1 */
  910.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  911.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  912.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  913.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  914.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  915.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  916.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) /* Probably difficulty */
  917.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  918.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  919.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  920.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  921.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  922.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) /* One of these is continue */
  923.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  924.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  925.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  926.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  927.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  928.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  929.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  930.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  931.     PORT_SERVICE( 0x80, IP_ACTIVE_LOW )
  932.  
  933.     PORT_START    /* Dip switch bank 2 */
  934.     PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
  935.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  936.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  937.     PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
  938.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  939.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  940.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
  941.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  942.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  943.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
  944.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  945.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  946.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
  947.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  948.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  949.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
  950.     PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
  951.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  952.     PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
  953.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  954.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  955.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
  956.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  957.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  958. INPUT_PORTS_END
  959.  
  960. /***************************************************************************/
  961.  
  962. static struct GfxLayout charlayout =
  963. {
  964.     8,8,    /* 8*8 characters */
  965.     65536,    /* 65536 characters */
  966.     4,    /* 4 bits per pixel */
  967.     { 0x180000*8, 0x100000*8, 0x80000*8, 0x000000*8 },    /* the bitplanes are separated */
  968.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  969.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  970.     8*8    /* every char takes 8 consecutive bytes */
  971. };
  972.  
  973. static struct GfxLayout spritelayout =
  974. {
  975.     16,16,
  976.     0x8000,
  977.     4,
  978.     { 0x300000*8, 0x200000*8, 0x100000*8, 0x000000*8 },
  979.     { 0, 1, 2, 3, 4, 5, 6, 7,
  980.         16*8+0, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
  981.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  982.             8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  983.     32*8
  984. };
  985.  
  986. static struct GfxLayout spritelayout2 =
  987. {
  988.     16,16,
  989.     0x10000,
  990.     4,
  991.     { 0x600000*8, 0x400000*8, 0x200000*8, 0x000000*8 },
  992.     { 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7 },
  993.     { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
  994.             8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
  995.     32*8
  996. };
  997.  
  998. static struct GfxDecodeInfo gfxdecodeinfo[] =
  999. {
  1000.     { REGION_GFX1, 0, &charlayout,   0, 64 },
  1001.     { REGION_GFX2, 0, &spritelayout, 0, 64 },
  1002.     { -1 } /* end of array */
  1003. };
  1004.  
  1005. static struct GfxDecodeInfo gfxdecodeinfo2[] =
  1006. {
  1007.     { REGION_GFX1, 0, &charlayout,    0, 64 },
  1008.     { REGION_GFX2, 0, &spritelayout2, 0, 64 },
  1009.     { -1 } /* end of array */
  1010. };
  1011.  
  1012. /***************************************************************************/
  1013.  
  1014. static int m92_interrupt(void)
  1015. {
  1016.     m92_vblank=m92_raster_machine=0;
  1017.     if (osd_skip_this_frame()==0)
  1018.         m92_vh_raster_partial_refresh(Machine->scrbitmap,0,248);
  1019.  
  1020.     return M92_IRQ_0; /* VBL */
  1021. }
  1022.  
  1023. static int m92_raster_interrupt(void)
  1024. {
  1025.     static int last_line=0;
  1026.     int line = 256 - cpu_getiloops();
  1027.     m92_raster_machine=1;
  1028.  
  1029.     /* Raster interrupt */
  1030.     if (m92_raster_enable && line==m92_raster_irq_position) {
  1031.         if (osd_skip_this_frame()==0)
  1032.             m92_vh_raster_partial_refresh(Machine->scrbitmap,last_line,line);
  1033.         last_line=line+1;
  1034.  
  1035.         return M92_IRQ_2;
  1036.     }
  1037.  
  1038.     /* Redraw screen, then set vblank and trigger the VBL interrupt */
  1039.     if (line==248) {
  1040.         if (osd_skip_this_frame()==0)
  1041.             m92_vh_raster_partial_refresh(Machine->scrbitmap,last_line,248);
  1042.         last_line=248;
  1043.         m92_vblank=1;
  1044.         return M92_IRQ_0;
  1045.     }
  1046.  
  1047.     /* End of vblank */
  1048.     if (line==255) {
  1049.         m92_vblank=last_line=0;
  1050.         return 0;
  1051.     }
  1052.  
  1053.     if (m92_game_kludge==2 && line==250) /* Leagueman */
  1054.         return M92_IRQ_1;
  1055.  
  1056.     return 0;
  1057. }
  1058.  
  1059. /* I believe the spritechip interrupts the main CPU once sprite buffering
  1060. is complete, there isn't a whole lot of evidence for this but it's an idea..*/
  1061. void m92_sprite_interrupt(void)
  1062. {
  1063.     cpu_cause_interrupt(0,M92_IRQ_3);
  1064. }
  1065.  
  1066. static struct MachineDriver machine_driver_raster =
  1067. {
  1068.     /* basic machine hardware */
  1069.     {
  1070.         {
  1071.             CPU_V33,    /* NEC V33 */
  1072.             18000000,    /* 18 MHz clock */
  1073.             readmem,writemem,readport,writeport,
  1074.             m92_raster_interrupt,256 /* 8 prelines, 240 visible lines, 8 for vblank? */
  1075.         },
  1076. #if 0
  1077.         {
  1078.             CPU_V33 | CPU_AUDIO_CPU,
  1079.             14318180,    /* 14.31818 MHz */
  1080.             sound_readmem,sound_writemem,0,0,
  1081.             ignore_interrupt,0
  1082.         }
  1083. #endif
  1084.     },
  1085.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1086.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1087.     0,
  1088.  
  1089.     /* video hardware */
  1090.     512, 512, { 80, 511-112, 128+8, 511-128-8 }, /* 320 x 240 */
  1091.  
  1092.     gfxdecodeinfo,
  1093.     1024,1024,
  1094.     0,
  1095.  
  1096.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_BUFFERS_SPRITERAM,
  1097.     0,
  1098.     m92_vh_start,
  1099.     0,
  1100.     m92_vh_screenrefresh,
  1101.  
  1102.     /* sound hardware */
  1103. #if 0
  1104.     SOUND_SUPPORTS_STEREO,0,0,0,
  1105.     {
  1106.         {
  1107.             SOUND_YM2151,
  1108.             &ym2151_interface
  1109.         }
  1110.     }
  1111. #endif
  1112. };
  1113.  
  1114. static struct MachineDriver machine_driver_nonraster =
  1115. {
  1116.     /* basic machine hardware */
  1117.     {
  1118.         {
  1119.             CPU_V33,    /* NEC V33 */
  1120.             18000000,    /* 18 MHz clock */
  1121.             readmem,writemem,readport,writeport,
  1122.             m92_interrupt,1
  1123.         },
  1124. #if 0
  1125.         {
  1126.             CPU_V33 | CPU_AUDIO_CPU,
  1127.             14318180,    /* 14.31818 MHz */
  1128.             sound_readmem,sound_writemem,0,0,
  1129.             ignore_interrupt,0
  1130.         }
  1131. #endif
  1132.     },
  1133.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1134.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1135.     0,
  1136.  
  1137.     /* video hardware */
  1138.     512, 512, { 80, 511-112, 128+8, 511-128-8 }, /* 320 x 240 */
  1139.  
  1140.     gfxdecodeinfo,
  1141.     1024,1024,
  1142.     0,
  1143.  
  1144.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_BUFFERS_SPRITERAM,
  1145.     0,
  1146.     m92_vh_start,
  1147.     0,
  1148.     m92_vh_screenrefresh,
  1149.  
  1150.     /* sound hardware */
  1151. #if 0
  1152.     SOUND_SUPPORTS_STEREO,0,0,0,
  1153.     {
  1154.         {
  1155.             SOUND_YM2151,
  1156.             &ym2151_interface
  1157.         }
  1158.     }
  1159. #endif
  1160. };
  1161.  
  1162. static struct MachineDriver machine_driver_lethalth =
  1163. {
  1164.     /* basic machine hardware */
  1165.     {
  1166.         {
  1167.             CPU_V33,    /* NEC V33 */
  1168.             18000000,    /* 18 MHz clock */
  1169.             lethalth_readmem,lethalth_writemem,readport,writeport,
  1170.             m92_interrupt,1
  1171.         },
  1172. #if 0
  1173.         {
  1174.             CPU_V33 | CPU_AUDIO_CPU,
  1175.             14318180,    /* 14.31818 MHz */
  1176.             sound_readmem,sound_writemem,0,0,
  1177.             ignore_interrupt,0
  1178.         }
  1179. #endif
  1180.     },
  1181.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1182.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1183.     0,
  1184.  
  1185.     /* video hardware */
  1186.     512, 512, { 80, 511-112, 128+8, 511-128-8 }, /* 320 x 240 */
  1187.  
  1188.     gfxdecodeinfo,
  1189.     1024,1024,
  1190.     0,
  1191.  
  1192.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_BUFFERS_SPRITERAM,
  1193.     0,
  1194.     m92_vh_start,
  1195.     0,
  1196.     m92_vh_screenrefresh,
  1197.  
  1198.     /* sound hardware */
  1199. #if 0
  1200.     SOUND_SUPPORTS_STEREO,0,0,0,
  1201.     {
  1202.         {
  1203.             SOUND_YM2151,
  1204.             &ym2151_interface
  1205.         }
  1206.     }
  1207. #endif
  1208. };
  1209.  
  1210. static struct MachineDriver machine_driver_psoldier =
  1211. {
  1212.     /* basic machine hardware */
  1213.     {
  1214.         {
  1215.             CPU_V33,    /* NEC V33 */
  1216.             18000000,    /* 18 MHz clock */
  1217.             readmem,writemem,readport,writeport,
  1218.             m92_interrupt,1
  1219.         },
  1220. #if 0
  1221.         {
  1222.             CPU_V33 | CPU_AUDIO_CPU,
  1223.             14318180,    /* 14.31818 MHz */
  1224.             sound_readmem,sound_writemem,0,0,
  1225.             ignore_interrupt,0
  1226.         }
  1227. #endif
  1228.     },
  1229.     60, DEFAULT_60HZ_VBLANK_DURATION,    /* frames per second, vblank duration */
  1230.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1231.     0,
  1232.  
  1233.     /* video hardware */
  1234.     512, 512, { 80, 511-112, 128+8, 511-128-8 }, /* 320 x 240 */
  1235.  
  1236.     gfxdecodeinfo2,
  1237.     1024,1024,
  1238.     0,
  1239.  
  1240.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_BUFFERS_SPRITERAM,
  1241.     0,
  1242.     m92_vh_start,
  1243.     0,
  1244.     m92_vh_screenrefresh,
  1245.  
  1246.     /* sound hardware */
  1247. #if 0
  1248.     SOUND_SUPPORTS_STEREO,0,0,0,
  1249.     {
  1250.         {
  1251.             SOUND_YM2151,
  1252.             &ym2151_interface
  1253.         }
  1254.     }
  1255. #endif
  1256. };
  1257.  
  1258. /***************************************************************************/
  1259.  
  1260. ROM_START( bmaster )
  1261.     ROM_REGION( 0x100000, REGION_CPU1 )
  1262.     ROM_LOAD_V20_EVEN( "bm_d-h0.rom",  0x000000, 0x40000, 0x49b257c7 )
  1263.     ROM_LOAD_V20_ODD ( "bm_d-l0.rom",  0x000000, 0x40000, 0xa873523e )
  1264.     ROM_LOAD_V20_EVEN( "bm_d-h1.rom",  0x080000, 0x10000, 0x082b7158 )
  1265.     ROM_LOAD_V20_ODD ( "bm_d-l1.rom",  0x080000, 0x10000, 0x6ff0c04e )
  1266.  
  1267.     ROM_REGION( 0x100000, REGION_CPU2 )
  1268.     ROM_LOAD_V20_EVEN( "bm_d-sh0.rom",  0x000000, 0x10000, 0x9f7c075b )
  1269.     ROM_LOAD_V20_ODD ( "bm_d-sl0.rom",  0x000000, 0x10000, 0x1fa87c89 )
  1270.  
  1271.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1272.     ROM_LOAD( "bm_c0.rom",       0x000000, 0x40000, 0x2cc966b8 )
  1273.     ROM_LOAD( "bm_c1.rom",       0x080000, 0x40000, 0x46df773e )
  1274.     ROM_LOAD( "bm_c2.rom",       0x100000, 0x40000, 0x05b867bd )
  1275.     ROM_LOAD( "bm_c3.rom",       0x180000, 0x40000, 0x0a2227a4 )
  1276.  
  1277.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1278.     ROM_LOAD( "bm_000.rom",      0x000000, 0x80000, 0x339fc9f3 )
  1279.     ROM_LOAD( "bm_010.rom",      0x100000, 0x80000, 0x6a14377d )
  1280.     ROM_LOAD( "bm_020.rom",      0x200000, 0x80000, 0x31532198 )
  1281.     ROM_LOAD( "bm_030.rom",      0x300000, 0x80000, 0xd1a041d3 )
  1282.  
  1283.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1284.     ROM_LOAD( "bm_da.rom",       0x000000, 0x80000, 0x62ce5798 )
  1285. ROM_END
  1286.  
  1287. ROM_START( skingame )
  1288.     ROM_REGION( 0x180000, REGION_CPU1 )
  1289.     ROM_LOAD_V20_EVEN( "is-h0-d",  0x000000, 0x40000, 0x80940abb )
  1290.     ROM_LOAD_V20_ODD ( "is-l0-d",  0x000000, 0x40000, 0xb84beed6 )
  1291.     ROM_LOAD_V20_EVEN( "is-h1",    0x100000, 0x40000, 0x9ba8e1f2 )
  1292.     ROM_LOAD_V20_ODD ( "is-l1",    0x100000, 0x40000, 0xe4e00626 )
  1293.  
  1294.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 64k for the audio CPU */
  1295.     ROM_LOAD_V20_EVEN( "mt2sh0",  0x000000, 0x10000, 0x1ecbea43 )
  1296.     ROM_LOAD_V20_ODD ( "mt2sl0",  0x000000, 0x10000, 0x8fd5b531 )
  1297.  
  1298.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1299.     ROM_LOAD( "c0",       0x000000, 0x40000, 0x7e61e4b5 )
  1300.     ROM_LOAD( "c1",       0x080000, 0x40000, 0x0a667564 )
  1301.     ROM_LOAD( "c2",       0x100000, 0x40000, 0x5eb44312 )
  1302.     ROM_LOAD( "c3",       0x180000, 0x40000, 0xf2866294 )
  1303.  
  1304.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1305.     ROM_LOAD( "k30",      0x000000, 0x100000, 0x8c9a2678 )
  1306.     ROM_LOAD( "k31",      0x100000, 0x100000, 0x5455df78 )
  1307.     ROM_LOAD( "k32",      0x200000, 0x100000, 0x3a258c41 )
  1308.     ROM_LOAD( "k33",      0x300000, 0x100000, 0xc1e91a14 )
  1309.  
  1310.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1311.     ROM_LOAD( "da",        0x000000, 0x80000, 0x713b9e9f )
  1312.  
  1313.     ROM_REGION( 0x4000, REGION_USER1 )    /* EEPROM */
  1314.     ROM_LOAD( "mt2eep",       0x000000, 0x800, 0x208af971 )
  1315. ROM_END
  1316.  
  1317. ROM_START( majtitl2 )
  1318.     ROM_REGION( 0x180000, REGION_CPU1 )
  1319.     ROM_LOAD_V20_EVEN( "mt2-ho-b.5m",0x000000, 0x40000, 0xb163b12e )
  1320.     ROM_LOAD_V20_ODD ( "mt2-lo-b.5f",0x000000, 0x40000, 0x6f3b5d9d )
  1321.     ROM_LOAD_V20_EVEN( "is-h1",      0x100000, 0x40000, 0x9ba8e1f2 )
  1322.     ROM_LOAD_V20_ODD ( "is-l1",      0x100000, 0x40000, 0xe4e00626 )
  1323.  
  1324.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 64k for the audio CPU */
  1325.     ROM_LOAD_V20_EVEN( "mt2sh0",  0x000000, 0x10000, 0x1ecbea43 )
  1326.     ROM_LOAD_V20_ODD ( "mt2sl0",  0x000000, 0x10000, 0x8fd5b531 )
  1327.  
  1328.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1329.     ROM_LOAD( "c0",       0x000000, 0x40000, 0x7e61e4b5 )
  1330.     ROM_LOAD( "c1",       0x080000, 0x40000, 0x0a667564 )
  1331.     ROM_LOAD( "c2",       0x100000, 0x40000, 0x5eb44312 )
  1332.     ROM_LOAD( "c3",       0x180000, 0x40000, 0xf2866294 )
  1333.  
  1334.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1335.     ROM_LOAD( "k30",      0x000000, 0x100000, 0x8c9a2678 )
  1336.     ROM_LOAD( "k31",      0x100000, 0x100000, 0x5455df78 )
  1337.     ROM_LOAD( "k32",      0x200000, 0x100000, 0x3a258c41 )
  1338.     ROM_LOAD( "k33",      0x300000, 0x100000, 0xc1e91a14 )
  1339.  
  1340.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1341.     ROM_LOAD( "da",        0x000000, 0x80000, 0x713b9e9f )
  1342.  
  1343.     ROM_REGION( 0x4000, REGION_USER1 )    /* EEPROM */
  1344.     ROM_LOAD( "mt2eep",       0x000000, 0x800, 0x208af971 )
  1345. ROM_END
  1346.  
  1347. ROM_START( skingam2 )
  1348.     ROM_REGION( 0x180000, REGION_CPU1 )
  1349.     ROM_LOAD_V20_EVEN( "mt2h0a", 0x000000, 0x40000, 0x7c6dbbc7 )
  1350.     ROM_LOAD_V20_ODD ( "mt2l0a", 0x000000, 0x40000, 0x9de5f689 )
  1351.     ROM_LOAD_V20_EVEN( "is-h1",  0x100000, 0x40000, 0x9ba8e1f2 )
  1352.     ROM_LOAD_V20_ODD ( "is-l1",  0x100000, 0x40000, 0xe4e00626 )
  1353.  
  1354.     ROM_REGION( 0x100000, REGION_CPU2 )
  1355.     ROM_LOAD_V20_EVEN( "mt2sh0",  0x000000, 0x10000, 0x1ecbea43 )
  1356.     ROM_LOAD_V20_ODD ( "mt2sl0",  0x000000, 0x10000, 0x8fd5b531 )
  1357.  
  1358.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1359.     ROM_LOAD( "c0",       0x000000, 0x40000, 0x7e61e4b5 )
  1360.     ROM_LOAD( "c1",       0x080000, 0x40000, 0x0a667564 )
  1361.     ROM_LOAD( "c2",       0x100000, 0x40000, 0x5eb44312 )
  1362.     ROM_LOAD( "c3",       0x180000, 0x40000, 0xf2866294 )
  1363.  
  1364.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1365.     ROM_LOAD( "k30",      0x000000, 0x100000, 0x8c9a2678 )
  1366.     ROM_LOAD( "k31",      0x100000, 0x100000, 0x5455df78 )
  1367.     ROM_LOAD( "k32",      0x200000, 0x100000, 0x3a258c41 )
  1368.     ROM_LOAD( "k33",      0x300000, 0x100000, 0xc1e91a14 )
  1369.  
  1370.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1371.     ROM_LOAD( "da",        0x000000, 0x80000, 0x713b9e9f )
  1372.  
  1373.     ROM_REGION( 0x4000, REGION_USER1 )    /* EEPROM */
  1374.     ROM_LOAD( "mt2eep",       0x000000, 0x800, 0x208af971 )
  1375. ROM_END
  1376.  
  1377. ROM_START( gunforce )
  1378.     ROM_REGION( 0x100000, REGION_CPU1 )
  1379.     ROM_LOAD_V20_EVEN( "gf_h0-c.rom",  0x000000, 0x20000, 0xc09bb634 )
  1380.     ROM_LOAD_V20_ODD ( "gf_l0-c.rom",  0x000000, 0x20000, 0x1bef6f7d )
  1381.     ROM_LOAD_V20_EVEN( "gf_h1-c.rom",  0x040000, 0x20000, 0xc84188b7 )
  1382.     ROM_LOAD_V20_ODD ( "gf_l1-c.rom",  0x040000, 0x20000, 0xb189f72a )
  1383.  
  1384.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1385.     ROM_LOAD_V20_EVEN( "gf_sh0.rom",0x000000, 0x010000, 0x3f8f16e0 )
  1386.     ROM_LOAD_V20_ODD ( "gf_sl0.rom",0x000000, 0x010000, 0xdb0b13a3 )
  1387.  
  1388.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1389.     ROM_LOAD( "gf_c0.rom",       0x000000, 0x40000, 0xb3b74979 )
  1390.     ROM_LOAD( "gf_c1.rom",       0x080000, 0x40000, 0xf5c8590a )
  1391.     ROM_LOAD( "gf_c2.rom",       0x100000, 0x40000, 0x30f9fb64 )
  1392.     ROM_LOAD( "gf_c3.rom",       0x180000, 0x40000, 0x87b3e621 )
  1393.  
  1394.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1395.     ROM_LOAD( "gf_000.rom",      0x000000, 0x40000, 0x209e8e8d )
  1396.     ROM_LOAD( "gf_010.rom",      0x100000, 0x40000, 0x6e6e7808 )
  1397.     ROM_LOAD( "gf_020.rom",      0x200000, 0x40000, 0x6f5c3cb0 )
  1398.     ROM_LOAD( "gf_030.rom",      0x300000, 0x40000, 0x18978a9f )
  1399.  
  1400.     ROM_REGION( 0x20000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1401.     ROM_LOAD( "gf-da.rom",     0x000000, 0x020000, 0x933ba935 )
  1402. ROM_END
  1403.  
  1404. ROM_START( gunforcu )
  1405.     ROM_REGION( 0x100000, REGION_CPU1 )
  1406.     ROM_LOAD_V20_EVEN( "gf_h0-d.5m",  0x000000, 0x20000, 0xa6db7b5c )
  1407.     ROM_LOAD_V20_ODD ( "gf_l0-d.5f",  0x000000, 0x20000, 0x82cf55f6 )
  1408.     ROM_LOAD_V20_EVEN( "gf_h1-d.5l",  0x040000, 0x20000, 0x08a3736c )
  1409.     ROM_LOAD_V20_ODD ( "gf_l1-d.5j",  0x040000, 0x20000, 0x435f524f )
  1410.  
  1411.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1412.     ROM_LOAD_V20_EVEN( "gf_sh0.rom",0x000000, 0x010000, 0x3f8f16e0 )
  1413.     ROM_LOAD_V20_ODD ( "gf_sl0.rom",0x000000, 0x010000, 0xdb0b13a3 )
  1414.  
  1415.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1416.     ROM_LOAD( "gf_c0.rom",       0x000000, 0x40000, 0xb3b74979 )
  1417.     ROM_LOAD( "gf_c1.rom",       0x080000, 0x40000, 0xf5c8590a )
  1418.     ROM_LOAD( "gf_c2.rom",       0x100000, 0x40000, 0x30f9fb64 )
  1419.     ROM_LOAD( "gf_c3.rom",       0x180000, 0x40000, 0x87b3e621 )
  1420.  
  1421.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1422.     ROM_LOAD( "gf_000.rom",      0x000000, 0x40000, 0x209e8e8d )
  1423.     ROM_LOAD( "gf_010.rom",      0x100000, 0x40000, 0x6e6e7808 )
  1424.     ROM_LOAD( "gf_020.rom",      0x200000, 0x40000, 0x6f5c3cb0 )
  1425.     ROM_LOAD( "gf_030.rom",      0x300000, 0x40000, 0x18978a9f )
  1426.  
  1427.     ROM_REGION( 0x20000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1428.     ROM_LOAD( "gf-da.rom",     0x000000, 0x020000, 0x933ba935 )
  1429. ROM_END
  1430.  
  1431. ROM_START( inthunt )
  1432.     ROM_REGION( 0x100000, REGION_CPU1 )
  1433.     ROM_LOAD_V20_EVEN( "ith-h0-d.rom",0x000000, 0x040000, 0x52f8e7a6 )
  1434.     ROM_LOAD_V20_ODD ( "ith-l0-d.rom",0x000000, 0x040000, 0x5db79eb7 )
  1435.     ROM_LOAD_V20_EVEN( "ith-h1-b.rom",0x080000, 0x020000, 0xfc2899df )
  1436.     ROM_LOAD_V20_ODD ( "ith-l1-b.rom",0x080000, 0x020000, 0x955a605a )
  1437.  
  1438.     ROM_REGION( 0x100000, REGION_CPU2 )    /* Irem D8000011A1 */
  1439.     ROM_LOAD_V20_EVEN( "ith-sh0.rom",0x000000, 0x010000, 0x209c8b7f )
  1440.     ROM_LOAD_V20_ODD ( "ith-sl0.rom",0x000000, 0x010000, 0x18472d65 )
  1441.  
  1442.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1443.     ROM_LOAD( "ith_ic26.rom",0x000000, 0x080000, 0x4c1818cf )
  1444.     ROM_LOAD( "ith_ic25.rom",0x080000, 0x080000, 0x91145bae )
  1445.     ROM_LOAD( "ith_ic24.rom",0x100000, 0x080000, 0xfc03fe3b )
  1446.     ROM_LOAD( "ith_ic23.rom",0x180000, 0x080000, 0xee156a0a )
  1447.  
  1448.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1449.     ROM_LOAD( "ith_ic34.rom",0x000000, 0x100000, 0xa019766e )
  1450.     ROM_LOAD( "ith_ic35.rom",0x100000, 0x100000, 0x3fca3073 )
  1451.     ROM_LOAD( "ith_ic36.rom",0x200000, 0x100000, 0x20d1b28b )
  1452.     ROM_LOAD( "ith_ic37.rom",0x300000, 0x100000, 0x90b6fd4b )
  1453.  
  1454.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1455.     ROM_LOAD( "ith_ic9.rom" ,0x000000, 0x080000, 0x318ee71a )
  1456. ROM_END
  1457.  
  1458. ROM_START( inthuntu )
  1459.     ROM_REGION( 0x100000, REGION_CPU1 )
  1460.     ROM_LOAD_V20_EVEN( "ithhoc.bin",0x000000, 0x040000, 0x563dcec0 )
  1461.     ROM_LOAD_V20_ODD ( "ithloc.bin",0x000000, 0x040000, 0x1638c705 )
  1462.     ROM_LOAD_V20_EVEN( "ithh1a.bin",0x080000, 0x020000, 0x0253065f )
  1463.     ROM_LOAD_V20_ODD ( "ithl1a.bin",0x080000, 0x020000, 0xa57d688d )
  1464.  
  1465.     ROM_REGION( 0x100000, REGION_CPU2 )    /* Irem D8000011A1 */
  1466.     ROM_LOAD_V20_EVEN( "ith-sh0.rom",0x000000, 0x010000, 0x209c8b7f )
  1467.     ROM_LOAD_V20_ODD ( "ith-sl0.rom",0x000000, 0x010000, 0x18472d65 )
  1468.  
  1469.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1470.     ROM_LOAD( "ith_ic26.rom",0x000000, 0x080000, 0x4c1818cf )
  1471.     ROM_LOAD( "ith_ic25.rom",0x080000, 0x080000, 0x91145bae )
  1472.     ROM_LOAD( "ith_ic24.rom",0x100000, 0x080000, 0xfc03fe3b )
  1473.     ROM_LOAD( "ith_ic23.rom",0x180000, 0x080000, 0xee156a0a )
  1474.  
  1475.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1476.     ROM_LOAD( "ith_ic34.rom",0x000000, 0x100000, 0xa019766e )
  1477.     ROM_LOAD( "ith_ic35.rom",0x100000, 0x100000, 0x3fca3073 )
  1478.     ROM_LOAD( "ith_ic36.rom",0x200000, 0x100000, 0x20d1b28b )
  1479.     ROM_LOAD( "ith_ic37.rom",0x300000, 0x100000, 0x90b6fd4b )
  1480.  
  1481.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1482.     ROM_LOAD( "ith_ic9.rom" ,0x000000, 0x080000, 0x318ee71a )
  1483. ROM_END
  1484.  
  1485. ROM_START( kaiteids )
  1486.     ROM_REGION( 0x100000, REGION_CPU1 )
  1487.     ROM_LOAD_V20_EVEN( "ith-h0j.bin",0x000000, 0x040000, 0xdc1dec36 )
  1488.     ROM_LOAD_V20_ODD ( "ith-l0j.bin",0x000000, 0x040000, 0x8835d704 )
  1489.     ROM_LOAD_V20_EVEN( "ith-h1j.bin",0x080000, 0x020000, 0x5a7b212d )
  1490.     ROM_LOAD_V20_ODD ( "ith-l1j.bin",0x080000, 0x020000, 0x4c084494 )
  1491.  
  1492.     ROM_REGION( 0x100000, REGION_CPU2 )    /* Irem D8000011A1 */
  1493.     ROM_LOAD_V20_EVEN( "ith-sh0.rom",0x000000, 0x010000, 0x209c8b7f )
  1494.     ROM_LOAD_V20_ODD ( "ith-sl0.rom",0x000000, 0x010000, 0x18472d65 )
  1495.  
  1496.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1497.     ROM_LOAD( "ith_ic26.rom",0x000000, 0x080000, 0x4c1818cf )
  1498.     ROM_LOAD( "ith_ic25.rom",0x080000, 0x080000, 0x91145bae )
  1499.     ROM_LOAD( "ith_ic24.rom",0x100000, 0x080000, 0xfc03fe3b )
  1500.     ROM_LOAD( "ith_ic23.rom",0x180000, 0x080000, 0xee156a0a )
  1501.  
  1502.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1503.     ROM_LOAD( "ith_ic34.rom",0x000000, 0x100000, 0xa019766e )
  1504.     ROM_LOAD( "ith_ic35.rom",0x100000, 0x100000, 0x3fca3073 )
  1505.     ROM_LOAD( "ith_ic36.rom",0x200000, 0x100000, 0x20d1b28b )
  1506.     ROM_LOAD( "ith_ic37.rom",0x300000, 0x100000, 0x90b6fd4b )
  1507.  
  1508.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1509.     ROM_LOAD( "ith_ic9.rom" ,0x000000, 0x080000, 0x318ee71a )
  1510. ROM_END
  1511.  
  1512. ROM_START( hook )
  1513.     ROM_REGION( 0x100000, REGION_CPU1 )
  1514.     ROM_LOAD_V20_EVEN( "h-h0-d.rom",0x000000, 0x040000, 0x40189ff6 )
  1515.     ROM_LOAD_V20_ODD ( "h-l0-d.rom",0x000000, 0x040000, 0x14567690 )
  1516.     ROM_LOAD_V20_EVEN( "h-h1.rom",  0x080000, 0x020000, 0x264ba1f0 )
  1517.     ROM_LOAD_V20_ODD ( "h-l1.rom",  0x080000, 0x020000, 0xf9913731 )
  1518.  
  1519.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1520.     ROM_LOAD_V20_EVEN( "h-sh0.rom",0x000000, 0x010000, 0x86a4e56e )
  1521.     ROM_LOAD_V20_ODD ( "h-sl0.rom",0x000000, 0x010000, 0x10fd9676 )
  1522.  
  1523.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1524.     ROM_LOAD( "hook-c0.rom",0x000000, 0x040000, 0xdec63dcf )
  1525.     ROM_LOAD( "hook-c1.rom",0x080000, 0x040000, 0xe4eb0b92 )
  1526.     ROM_LOAD( "hook-c2.rom",0x100000, 0x040000, 0xa52b320b )
  1527.     ROM_LOAD( "hook-c3.rom",0x180000, 0x040000, 0x7ef67731 )
  1528.  
  1529.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1530.     ROM_LOAD( "hook-000.rom",0x000000, 0x100000, 0xccceac30 )
  1531.     ROM_LOAD( "hook-010.rom",0x100000, 0x100000, 0x8ac8da67 )
  1532.     ROM_LOAD( "hook-020.rom",0x200000, 0x100000, 0x8847af9a )
  1533.     ROM_LOAD( "hook-030.rom",0x300000, 0x100000, 0x239e877e )
  1534.  
  1535.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1536.     ROM_LOAD( "hook-da.rom" ,0x000000, 0x080000, 0x88cd0212 )
  1537. ROM_END
  1538.  
  1539. ROM_START( hooku )
  1540.     ROM_REGION( 0x100000, REGION_CPU1 )
  1541.     ROM_LOAD_V20_EVEN( "h0-c.3h",0x000000, 0x040000, 0x84cc239e )
  1542.     ROM_LOAD_V20_ODD ( "l0-c.5h",0x000000, 0x040000, 0x45e194fe )
  1543.     ROM_LOAD_V20_EVEN( "h-h1.rom",  0x080000, 0x020000, 0x264ba1f0 )
  1544.     ROM_LOAD_V20_ODD ( "h-l1.rom",  0x080000, 0x020000, 0xf9913731 )
  1545.  
  1546.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1547.     ROM_LOAD_V20_EVEN( "h-sh0.rom",0x000000, 0x010000, 0x86a4e56e )
  1548.     ROM_LOAD_V20_ODD ( "h-sl0.rom",0x000000, 0x010000, 0x10fd9676 )
  1549.  
  1550.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1551.     ROM_LOAD( "hook-c0.rom",0x000000, 0x040000, 0xdec63dcf )
  1552.     ROM_LOAD( "hook-c1.rom",0x080000, 0x040000, 0xe4eb0b92 )
  1553.     ROM_LOAD( "hook-c2.rom",0x100000, 0x040000, 0xa52b320b )
  1554.     ROM_LOAD( "hook-c3.rom",0x180000, 0x040000, 0x7ef67731 )
  1555.  
  1556.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1557.     ROM_LOAD( "hook-000.rom",0x000000, 0x100000, 0xccceac30 )
  1558.     ROM_LOAD( "hook-010.rom",0x100000, 0x100000, 0x8ac8da67 )
  1559.     ROM_LOAD( "hook-020.rom",0x200000, 0x100000, 0x8847af9a )
  1560.     ROM_LOAD( "hook-030.rom",0x300000, 0x100000, 0x239e877e )
  1561.  
  1562.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1563.     ROM_LOAD( "hook-da.rom" ,0x000000, 0x080000, 0x88cd0212 )
  1564. ROM_END
  1565.  
  1566. ROM_START( rtypeleo )
  1567.     ROM_REGION( 0x100000, REGION_CPU1 )
  1568.     ROM_LOAD_V20_EVEN( "rtl-h0-d.bin", 0x000000, 0x040000, 0x3dbac89f )
  1569.     ROM_LOAD_V20_ODD ( "rtl-l0-d.bin", 0x000000, 0x040000, 0xf85a2537 )
  1570.     ROM_LOAD_V20_EVEN( "rtl-h1-d.bin", 0x080000, 0x020000, 0x352ff444 )
  1571.     ROM_LOAD_V20_ODD ( "rtl-l1-d.bin", 0x080000, 0x020000, 0xfd34ea46 )
  1572.  
  1573.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1574.     ROM_LOAD_V20_EVEN( "rtl-sh0a.bin",0x000000, 0x010000, 0xe518b4e3 )
  1575.     ROM_LOAD_V20_ODD ( "rtl-sl0a.bin",0x000000, 0x010000, 0x896f0d36 )
  1576.  
  1577.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1578.     ROM_LOAD( "rtl-c0.bin", 0x000000, 0x080000, 0xfb588d7c )
  1579.     ROM_LOAD( "rtl-c1.bin", 0x080000, 0x080000, 0xe5541bff )
  1580.     ROM_LOAD( "rtl-c2.bin", 0x100000, 0x080000, 0xfaa9ae27 )
  1581.     ROM_LOAD( "rtl-c3.bin", 0x180000, 0x080000, 0x3a2343f6 )
  1582.  
  1583.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1584.     ROM_LOAD( "rtl-000.bin",0x000000, 0x100000, 0x82a06870 )
  1585.     ROM_LOAD( "rtl-010.bin",0x100000, 0x100000, 0x417e7a56 )
  1586.     ROM_LOAD( "rtl-020.bin",0x200000, 0x100000, 0xf9a3f3a1 )
  1587.     ROM_LOAD( "rtl-030.bin",0x300000, 0x100000, 0x03528d95 )
  1588.  
  1589.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1590.     ROM_LOAD( "rtl-da.bin" ,0x000000, 0x080000, 0xdbebd1ff )
  1591. ROM_END
  1592.  
  1593. ROM_START( mysticri )
  1594.     ROM_REGION( 0x100000, REGION_CPU1 )
  1595.     ROM_LOAD_V20_EVEN( "mr-h0-b.bin",  0x000000, 0x040000, 0xd529f887 )
  1596.     ROM_LOAD_V20_ODD ( "mr-l0-b.bin",  0x000000, 0x040000, 0xa457ab44 )
  1597.     ROM_LOAD_V20_EVEN( "mr-h1-b.bin",  0x080000, 0x010000, 0xe17649b9 )
  1598.     ROM_LOAD_V20_ODD ( "mr-l1-b.bin",  0x080000, 0x010000, 0xa87c62b4 )
  1599.  
  1600.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1601.     ROM_LOAD_V20_EVEN( "mr-sh0.bin",0x000000, 0x010000, 0x50d335e4 )
  1602.     ROM_LOAD_V20_ODD ( "mr-sl0.bin",0x000000, 0x010000, 0x0fa32721 )
  1603.  
  1604.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1605.     ROM_LOAD( "mr-c0.bin", 0x000000, 0x040000, 0x872a8fad )
  1606.     ROM_LOAD( "mr-c1.bin", 0x080000, 0x040000, 0xd2ffb27a )
  1607.     ROM_LOAD( "mr-c2.bin", 0x100000, 0x040000, 0x62bff287 )
  1608.     ROM_LOAD( "mr-c3.bin", 0x180000, 0x040000, 0xd0da62ab )
  1609.  
  1610.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1611.     ROM_LOAD( "mr-o00.bin", 0x000000, 0x080000, 0xa0f9ce16 )
  1612.     ROM_LOAD( "mr-o10.bin", 0x100000, 0x080000, 0x4e70a9e9 )
  1613.     ROM_LOAD( "mr-o20.bin", 0x200000, 0x080000, 0xb9c468fc )
  1614.     ROM_LOAD( "mr-o30.bin", 0x300000, 0x080000, 0xcc32433a )
  1615.  
  1616.     ROM_REGION( 0x40000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1617.     ROM_LOAD( "mr-da.bin" ,0x000000, 0x040000, 0x1a11fc59 )
  1618. ROM_END
  1619.  
  1620. ROM_START( gunhohki )
  1621.     ROM_REGION( 0x100000, REGION_CPU1 )
  1622.     ROM_LOAD_V20_EVEN( "mr-h0.bin",  0x000000, 0x040000, 0x83352270 )
  1623.     ROM_LOAD_V20_ODD ( "mr-l0.bin",  0x000000, 0x040000, 0x9db308ae )
  1624.     ROM_LOAD_V20_EVEN( "mr-h1.bin",  0x080000, 0x010000, 0xc9532b60 )
  1625.     ROM_LOAD_V20_ODD ( "mr-l1.bin",  0x080000, 0x010000, 0x6349b520 )
  1626.  
  1627.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1628.     ROM_LOAD_V20_EVEN( "mr-sh0.bin",0x000000, 0x010000, 0x50d335e4 )
  1629.     ROM_LOAD_V20_ODD ( "mr-sl0.bin",0x000000, 0x010000, 0x0fa32721 )
  1630.  
  1631.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1632.     ROM_LOAD( "mr-c0.bin", 0x000000, 0x040000, 0x872a8fad )
  1633.     ROM_LOAD( "mr-c1.bin", 0x080000, 0x040000, 0xd2ffb27a )
  1634.     ROM_LOAD( "mr-c2.bin", 0x100000, 0x040000, 0x62bff287 )
  1635.     ROM_LOAD( "mr-c3.bin", 0x180000, 0x040000, 0xd0da62ab )
  1636.  
  1637.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1638.     ROM_LOAD( "mr-o00.bin", 0x000000, 0x080000, 0xa0f9ce16 )
  1639.     ROM_LOAD( "mr-o10.bin", 0x100000, 0x080000, 0x4e70a9e9 )
  1640.     ROM_LOAD( "mr-o20.bin", 0x200000, 0x080000, 0xb9c468fc )
  1641.     ROM_LOAD( "mr-o30.bin", 0x300000, 0x080000, 0xcc32433a )
  1642.  
  1643.     ROM_REGION( 0x40000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1644.     ROM_LOAD( "mr-da.bin" ,0x000000, 0x040000, 0x1a11fc59 )
  1645. ROM_END
  1646.  
  1647. ROM_START( uccops )
  1648.     ROM_REGION( 0x100000, REGION_CPU1 )
  1649.     ROM_LOAD_V20_EVEN( "uc_h0.rom",  0x000000, 0x040000, 0x240aa5f7 )
  1650.     ROM_LOAD_V20_ODD ( "uc_l0.rom",  0x000000, 0x040000, 0xdf9a4826 )
  1651.     ROM_LOAD_V20_EVEN( "uc_h1.rom",  0x080000, 0x020000, 0x8d29bcd6 )
  1652.     ROM_LOAD_V20_ODD ( "uc_l1.rom",  0x080000, 0x020000, 0xa8a402d8 )
  1653.  
  1654.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1655.     ROM_LOAD_V20_EVEN( "uc_sh0.rom", 0x000000, 0x010000, 0xdf90b198 )
  1656.     ROM_LOAD_V20_ODD ( "uc_sl0.rom", 0x000000, 0x010000, 0x96c11aac )
  1657.  
  1658.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1659.     ROM_LOAD( "uc_w38m.rom", 0x000000, 0x080000, 0x130a40e5 )
  1660.     ROM_LOAD( "uc_w39m.rom", 0x080000, 0x080000, 0xe42ca144 )
  1661.     ROM_LOAD( "uc_w40m.rom", 0x100000, 0x080000, 0xc2961648 )
  1662.     ROM_LOAD( "uc_w41m.rom", 0x180000, 0x080000, 0xf5334b80 )
  1663.  
  1664.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1665.     ROM_LOAD( "uc_k16m.rom", 0x000000, 0x100000, 0x4a225f09 )
  1666.     ROM_LOAD( "uc_k17m.rom", 0x100000, 0x100000, 0xe4ed9a54 )
  1667.     ROM_LOAD( "uc_k18m.rom", 0x200000, 0x100000, 0xa626eb12 )
  1668.     ROM_LOAD( "uc_k19m.rom", 0x300000, 0x100000, 0x5df46549 )
  1669.  
  1670.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1671.     ROM_LOAD( "uc_w42.rom", 0x000000, 0x080000, 0xd17d3fd6 )
  1672. ROM_END
  1673.  
  1674. ROM_START( uccopsj )
  1675.     ROM_REGION( 0x100000, REGION_CPU1 )
  1676.     ROM_LOAD_V20_EVEN( "uca-h0.bin", 0x000000, 0x040000, 0x9e17cada )
  1677.     ROM_LOAD_V20_ODD ( "uca-l0.bin", 0x000000, 0x040000, 0x4a4e3208 )
  1678.     ROM_LOAD_V20_EVEN( "uca-h1.bin", 0x080000, 0x020000, 0x83f78dea )
  1679.     ROM_LOAD_V20_ODD ( "uca-l1.bin", 0x080000, 0x020000, 0x19628280 )
  1680.  
  1681.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU - encrypted V30 = NANAO custom D80001 (?) */
  1682.     ROM_LOAD_V20_EVEN( "uca-sh0.bin", 0x000000, 0x010000, 0xf0ca1b03 )
  1683.     ROM_LOAD_V20_ODD ( "uca-sl0.bin", 0x000000, 0x010000, 0xd1661723 )
  1684.  
  1685.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1686.     ROM_LOAD( "uca-c0.bin", 0x000000, 0x080000, 0x6a419a36 )
  1687.     ROM_LOAD( "uca-c1.bin", 0x080000, 0x080000, 0xd703ecc7 )
  1688.     ROM_LOAD( "uca-c2.bin", 0x100000, 0x080000, 0x96397ac6 )
  1689.     ROM_LOAD( "uca-c3.bin", 0x180000, 0x080000, 0x5d07d10d )
  1690.  
  1691.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1692.     ROM_LOAD( "uca-o3.bin", 0x000000, 0x100000, 0x97f7775e )
  1693.     ROM_LOAD( "uca-o2.bin", 0x100000, 0x100000, 0x5e0b1d65 )
  1694.     ROM_LOAD( "uca-o1.bin", 0x200000, 0x100000, 0xbdc224b3 )
  1695.     ROM_LOAD( "uca-o0.bin", 0x300000, 0x100000, 0x7526daec )
  1696.  
  1697.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1698.     ROM_LOAD( "uca-da.bin", 0x000000, 0x080000, 0x0b2855e9 )
  1699. ROM_END
  1700.  
  1701. ROM_START( lethalth )
  1702.     ROM_REGION( 0x100000, REGION_CPU1 )
  1703.     ROM_LOAD_V20_EVEN( "lt_d-h0.rom",  0x000000, 0x020000, 0x20c68935 )
  1704.     ROM_LOAD_V20_ODD ( "lt_d-l0.rom",  0x000000, 0x020000, 0xe1432fb3 )
  1705.     ROM_LOAD_V20_EVEN( "lt_d-h1.rom",  0x040000, 0x020000, 0xd7dd3d48 )
  1706.     ROM_LOAD_V20_ODD ( "lt_d-l1.rom",  0x040000, 0x020000, 0xb94b3bd8 )
  1707.  
  1708.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU */
  1709.     ROM_LOAD_V20_EVEN( "lt_d-sh0.rom",0x000000, 0x010000, 0xaf5b224f )
  1710.     ROM_LOAD_V20_ODD ( "lt_d-sl0.rom",0x000000, 0x010000, 0xcb3faac3 )
  1711.  
  1712.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1713.     ROM_LOAD( "lt_7a.rom", 0x000000, 0x040000, 0xada0fd50 )
  1714.     ROM_LOAD( "lt_7b.rom", 0x080000, 0x040000, 0xd2596883 )
  1715.     ROM_LOAD( "lt_7d.rom", 0x100000, 0x040000, 0x2de637ef )
  1716.     ROM_LOAD( "lt_7h.rom", 0x180000, 0x040000, 0x9f6585cd )
  1717.  
  1718.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1719.     ROM_LOAD( "lt_7j.rom", 0x000000, 0x040000, 0xbaf8863e )
  1720.     ROM_LOAD( "lt_7l.rom", 0x100000, 0x040000, 0x40fd50af )
  1721.     ROM_LOAD( "lt_7s.rom", 0x200000, 0x040000, 0xc8e970df )
  1722.     ROM_LOAD( "lt_7y.rom", 0x300000, 0x040000, 0xf5436708 )
  1723.  
  1724.     ROM_REGION( 0x40000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1725.     ROM_LOAD( "lt_8a.rom" ,0x000000, 0x040000, 0x357762a2 )
  1726. ROM_END
  1727.  
  1728. ROM_START( thndblst )
  1729.     ROM_REGION( 0x100000, REGION_CPU1 )
  1730.     ROM_LOAD_V20_EVEN( "lt_d-h0j.rom", 0x000000, 0x020000, 0xdc218a18 )
  1731.     ROM_LOAD_V20_ODD ( "lt_d-l0j.rom", 0x000000, 0x020000, 0xae9a3f81 )
  1732.     ROM_LOAD_V20_EVEN( "lt_d-h1.rom",  0x040000, 0x020000, 0xd7dd3d48 )
  1733.     ROM_LOAD_V20_ODD ( "lt_d-l1.rom",  0x040000, 0x020000, 0xb94b3bd8 )
  1734.  
  1735.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU */
  1736.     ROM_LOAD_V20_EVEN( "lt_d-sh0.rom",0x000000, 0x010000, 0xaf5b224f )
  1737.     ROM_LOAD_V20_ODD ( "lt_d-sl0.rom",0x000000, 0x010000, 0xcb3faac3 )
  1738.  
  1739.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1740.     ROM_LOAD( "lt_7a.rom", 0x000000, 0x040000, 0xada0fd50 )
  1741.     ROM_LOAD( "lt_7b.rom", 0x080000, 0x040000, 0xd2596883 )
  1742.     ROM_LOAD( "lt_7d.rom", 0x100000, 0x040000, 0x2de637ef )
  1743.     ROM_LOAD( "lt_7h.rom", 0x180000, 0x040000, 0x9f6585cd )
  1744.  
  1745.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1746.     ROM_LOAD( "lt_7j.rom", 0x000000, 0x040000, 0xbaf8863e )
  1747.     ROM_LOAD( "lt_7l.rom", 0x100000, 0x040000, 0x40fd50af )
  1748.     ROM_LOAD( "lt_7s.rom", 0x200000, 0x040000, 0xc8e970df )
  1749.     ROM_LOAD( "lt_7y.rom", 0x300000, 0x040000, 0xf5436708 )
  1750.  
  1751.     ROM_REGION( 0x40000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1752.     ROM_LOAD( "lt_8a.rom" ,0x000000, 0x040000, 0x357762a2 )
  1753. ROM_END
  1754.  
  1755. ROM_START( nbbatman )
  1756.     ROM_REGION( 0x180000, REGION_CPU1 )
  1757.     ROM_LOAD_V20_EVEN( "a1-h0-a.34",  0x000000, 0x040000, 0x24a9b794 )
  1758.     ROM_LOAD_V20_ODD ( "a1-l0-a.31",  0x000000, 0x040000, 0x846d7716 )
  1759.     ROM_LOAD_V20_EVEN( "a1-h1-.33",   0x100000, 0x040000, 0x3ce2aab5 )
  1760.     ROM_LOAD_V20_ODD ( "a1-l1-.32",   0x100000, 0x040000, 0x116d9bcc )
  1761.  
  1762.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU */
  1763.     ROM_LOAD_V20_EVEN( "a1-sh0-.14",0x000000, 0x010000, 0xb7fae3e6 )
  1764.     ROM_LOAD_V20_ODD ( "a1-sl0-.17",0x000000, 0x010000, 0xb26d54fc )
  1765.  
  1766.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1767.     ROM_LOAD( "lh534k0c.9",  0x000000, 0x080000, 0x314a0c6d )
  1768.     ROM_LOAD( "lh534k0e.10", 0x080000, 0x080000, 0xdc31675b )
  1769.     ROM_LOAD( "lh534k0f.11", 0x100000, 0x080000, 0xe15d8bfb )
  1770.     ROM_LOAD( "lh534k0g.12", 0x180000, 0x080000, 0x888d71a3 )
  1771.  
  1772.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1773.     ROM_LOAD( "lh538393.42", 0x000000, 0x100000, 0x26cdd224 )
  1774.     ROM_LOAD( "lh538394.43", 0x100000, 0x100000, 0x4bbe94fa )
  1775.     ROM_LOAD( "lh538395.44", 0x200000, 0x100000, 0x2a533b5e )
  1776.     ROM_LOAD( "lh538396.45", 0x300000, 0x100000, 0x863a66fa )
  1777.  
  1778.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1779.     ROM_LOAD( "lh534k0k.8" ,0x000000, 0x080000, 0x735e6380 )
  1780. ROM_END
  1781.  
  1782. ROM_START( leaguemn )
  1783.     ROM_REGION( 0x180000, REGION_CPU1 )
  1784.     ROM_LOAD_V20_EVEN( "lma1-h0.34",  0x000000, 0x040000, 0x47c54204 )
  1785.     ROM_LOAD_V20_ODD ( "lma1-l0.31",  0x000000, 0x040000, 0x1d062c82 )
  1786.     ROM_LOAD_V20_EVEN( "a1-h1-.33",   0x100000, 0x040000, 0x3ce2aab5 )
  1787.     ROM_LOAD_V20_ODD ( "a1-l1-.32",   0x100000, 0x040000, 0x116d9bcc )
  1788.  
  1789.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU */
  1790.     ROM_LOAD_V20_EVEN( "a1-sh0-.14",0x000000, 0x010000, 0xb7fae3e6 )
  1791.     ROM_LOAD_V20_ODD ( "a1-sl0-.17",0x000000, 0x010000, 0xb26d54fc )
  1792.  
  1793.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1794.     ROM_LOAD( "lh534k0c.9",  0x000000, 0x080000, 0x314a0c6d )
  1795.     ROM_LOAD( "lh534k0e.10", 0x080000, 0x080000, 0xdc31675b )
  1796.     ROM_LOAD( "lh534k0f.11", 0x100000, 0x080000, 0xe15d8bfb )
  1797.     ROM_LOAD( "lh534k0g.12", 0x180000, 0x080000, 0x888d71a3 )
  1798.  
  1799.     ROM_REGION( 0x400000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1800.     ROM_LOAD( "lh538393.42", 0x000000, 0x100000, 0x26cdd224 )
  1801.     ROM_LOAD( "lh538394.43", 0x100000, 0x100000, 0x4bbe94fa )
  1802.     ROM_LOAD( "lh538395.44", 0x200000, 0x100000, 0x2a533b5e )
  1803.     ROM_LOAD( "lh538396.45", 0x300000, 0x100000, 0x863a66fa )
  1804.  
  1805.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1806.     ROM_LOAD( "lh534k0k.8" ,0x000000, 0x080000, 0x735e6380 )
  1807. ROM_END
  1808.  
  1809. ROM_START( psoldier )
  1810.     ROM_REGION( 0x100000, REGION_CPU1 )
  1811.     ROM_LOAD_V20_EVEN( "f3_h0d.h0",  0x000000, 0x040000, 0x38f131fd )
  1812.     ROM_LOAD_V20_ODD ( "f3_l0d.l0",  0x000000, 0x040000, 0x1662969c )
  1813.     ROM_LOAD_V20_EVEN( "f3_h1.h1",   0x080000, 0x040000, 0xc8d1947c )
  1814.     ROM_LOAD_V20_ODD ( "f3_l1.l1",   0x080000, 0x040000, 0x7b9492fc )
  1815.  
  1816.     ROM_REGION( 0x100000, REGION_CPU2 )    /* 1MB for the audio CPU */
  1817.     ROM_LOAD_V20_EVEN( "f3_sh0.sh0",0x000000, 0x010000, 0x90b55e5e )
  1818.     ROM_LOAD_V20_ODD ( "f3_sl0.sl0",0x000000, 0x010000, 0x77c16d57 )
  1819.  
  1820.     ROM_REGION( 0x200000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* Tiles */
  1821.     ROM_LOAD( "f3_w50.c0",  0x000000, 0x040000, 0x47e788ee )
  1822.     ROM_LOAD( "f3_w51.c1",  0x080000, 0x040000, 0x8e535e3f )
  1823.     ROM_LOAD( "f3_w52.c2",  0x100000, 0x040000, 0xa6eb2e56 )
  1824.     ROM_LOAD( "f3_w53.c3",  0x180000, 0x040000, 0x2f992807 )
  1825.  
  1826.     ROM_REGION( 0x800000, REGION_GFX2 | REGIONFLAG_DISPOSE ) /* Sprites */
  1827.     ROM_LOAD_GFX_EVEN( "f3_w37.000", 0x000000, 0x100000, 0xfd4cda03 )
  1828.     ROM_LOAD_GFX_ODD ( "f3_w38.001", 0x000000, 0x100000, 0x755bab10 )
  1829.     ROM_LOAD_GFX_EVEN( "f3_w39.010", 0x200000, 0x100000, 0xb21ced92 )
  1830.     ROM_LOAD_GFX_ODD ( "f3_w40.011", 0x200000, 0x100000, 0x2e906889 )
  1831.     ROM_LOAD_GFX_EVEN( "f3_w41.020", 0x400000, 0x100000, 0x02455d10 )
  1832.     ROM_LOAD_GFX_ODD ( "f3_w42.021", 0x400000, 0x100000, 0x124589b9 )
  1833.     ROM_LOAD_GFX_EVEN( "f3_w43.030", 0x600000, 0x100000, 0xdae7327a )
  1834.     ROM_LOAD_GFX_ODD ( "f3_w44.031", 0x600000, 0x100000, 0xd0fc84ac )
  1835.  
  1836.     ROM_REGION( 0x80000, REGION_SOUND1 | REGIONFLAG_SOUNDONLY )
  1837.     ROM_LOAD( "f3_w95.da" ,0x000000, 0x080000, 0xf7ca432b )
  1838. ROM_END
  1839.  
  1840. /***************************************************************************/
  1841.  
  1842. static READ_HANDLER( lethalth_cycle_r )
  1843. {
  1844.     if (cpu_get_pc()==0x1f4 && m92_ram[0x1e]==2 && offset==0)
  1845.         cpu_spinuntil_int();
  1846.  
  1847.     return m92_ram[0x1e + offset];
  1848. }
  1849.  
  1850. static READ_HANDLER( hook_cycle_r )
  1851. {
  1852.     if (cpu_get_pc()==0x55ba && m92_ram[0x12]==0 && m92_ram[0x13]==0 && offset==0)
  1853.         cpu_spinuntil_int();
  1854.  
  1855.     return m92_ram[0x12 + offset];
  1856. }
  1857.  
  1858. static READ_HANDLER( psoldier_cycle_r )
  1859. {
  1860.     int a=m92_ram[0]+(m92_ram[1]<<8);
  1861.     int b=m92_ram[0x1aec]+(m92_ram[0x1aed]<<8);
  1862.     int c=m92_ram[0x1aea]+(m92_ram[0x1aeb]<<8);
  1863.  
  1864.     if (cpu_get_pc()==0x2dae && b!=a && c!=a && offset==0)
  1865.         cpu_spinuntil_int();
  1866.  
  1867.     return m92_ram[0x1aec + offset];
  1868. }
  1869.  
  1870. static READ_HANDLER( inthunt_cycle_r )
  1871. {
  1872.     int d=cpu_geticount();
  1873.     int line = 256 - cpu_getiloops();
  1874.  
  1875.     /* If possible skip this cpu segment - idle loop */
  1876.     if (d>159 && d<0xf0000000 && line<247) {
  1877.         if (cpu_get_pc()==0x858 && m92_ram[0x25f]==0 && offset==1) {
  1878.             /* Adjust in-game counter, based on cycles left to run */
  1879.             int old;
  1880.  
  1881.             old=m92_ram[0xb892]+(m92_ram[0xb893]<<8);
  1882.             old=(old+d/82)&0xffff; /* 82 cycles per increment */
  1883.             m92_ram[0xb892]=old&0xff;
  1884.             m92_ram[0xb893]=old>>8;
  1885.  
  1886.             cpu_spinuntil_int();
  1887.         }
  1888.     }
  1889.  
  1890.     return m92_ram[0x25e + offset];
  1891. }
  1892.  
  1893. static READ_HANDLER( uccops_cycle_r )
  1894. {
  1895.     int a=m92_ram[0x3f28]+(m92_ram[0x3f29]<<8);
  1896.     int b=m92_ram[0x3a00]+(m92_ram[0x3a01]<<8);
  1897.     int c=m92_ram[0x3a02]+(m92_ram[0x3a03]<<8);
  1898.     int d=cpu_geticount();
  1899.     int line = 256 - cpu_getiloops();
  1900.  
  1901.     /* If possible skip this cpu segment - idle loop */
  1902.     if (d>159 && d<0xf0000000 && line<247) {
  1903.         if ((cpu_get_pc()==0x900ff || cpu_get_pc()==0x90103) && b==c && offset==1) {
  1904.             cpu_spinuntil_int();
  1905.             /* Update internal counter based on cycles left to run */
  1906.             a=(a+d/127)&0xffff; /* 127 cycles per loop increment */
  1907.             m92_ram[0x3f28]=a&0xff;
  1908.             m92_ram[0x3f29]=a>>8;
  1909.         }
  1910.     }
  1911.  
  1912.     return m92_ram[0x3a02 + offset];
  1913. }
  1914.  
  1915. static READ_HANDLER( rtypeleo_cycle_r )
  1916. {
  1917.     if (cpu_get_pc()==0x307a3 && offset==0 && m92_ram[0x32]==2 && m92_ram[0x33]==0)
  1918.         cpu_spinuntil_int();
  1919.  
  1920.     return m92_ram[0x32 + offset];
  1921. }
  1922.  
  1923. static READ_HANDLER( gunforce_cycle_r )
  1924. {
  1925.     int a=m92_ram[0x6542]+(m92_ram[0x6543]<<8);
  1926.     int b=m92_ram[0x61d0]+(m92_ram[0x61d1]<<8);
  1927.     int d=cpu_geticount();
  1928.     int line = 256 - cpu_getiloops();
  1929.  
  1930.     /* If possible skip this cpu segment - idle loop */
  1931.     if (d>159 && d<0xf0000000 && line<247) {
  1932.         if (cpu_get_pc()==0x40a && ((b&0x8000)==0) && offset==1) {
  1933.             cpu_spinuntil_int();
  1934.             /* Update internal counter based on cycles left to run */
  1935.             a=(a+d/80)&0xffff; /* 80 cycles per loop increment */
  1936.             m92_ram[0x6542]=a&0xff;
  1937.             m92_ram[0x6543]=a>>8;
  1938.         }
  1939.     }
  1940.  
  1941.     return m92_ram[0x61d0 + offset];
  1942. }
  1943.  
  1944. /***************************************************************************/
  1945.  
  1946. static void m92_startup(void)
  1947. {
  1948.     unsigned char *RAM = memory_region(REGION_CPU1);
  1949.  
  1950.     memcpy(RAM+0xffff0,RAM+0x7fff0,0x10); /* Start vector */
  1951.     cpu_setbank(1,&RAM[0xa0000]); /* Initial bank */
  1952.  
  1953.     /* Mirror used by In The Hunt for protection */
  1954.     memcpy(RAM+0xc0000,RAM+0x00000,0x10000);
  1955.     cpu_setbank(2,&RAM[0xc0000]);
  1956.  
  1957.     RAM = memory_region(REGION_CPU2);
  1958.     memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
  1959.  
  1960.     m92_irq_vectorbase=0x80;
  1961.     m92_raster_enable=1;
  1962.     m92_spritechip=0;
  1963.     m92_game_kludge=0;
  1964. }
  1965.  
  1966. static void init_m92(void)
  1967. {
  1968. /*    m92_sound_decrypt();*/    /* Someday.. */
  1969.     m92_startup();
  1970. }
  1971.  
  1972. static void init_bmaster(void)
  1973. {
  1974.     init_m92();
  1975. }
  1976.  
  1977. static void init_gunforce(void)
  1978. {
  1979.     install_mem_read_handler(0, 0xe61d0, 0xe61d1, gunforce_cycle_r);
  1980.     init_m92();
  1981. }
  1982.  
  1983. static void init_hook(void)
  1984. {
  1985.     install_mem_read_handler(0, 0xe0012, 0xe0013, hook_cycle_r);
  1986.     init_m92();
  1987. }
  1988.  
  1989. static void init_mysticri(void)
  1990. {
  1991.     init_m92();
  1992.     m92_spritechip=1;
  1993. }
  1994.  
  1995. static void init_uccops(void)
  1996. {
  1997.     install_mem_read_handler(0, 0xe3a02, 0xe3a03, uccops_cycle_r);
  1998.     init_m92();
  1999.     m92_spritechip=1;
  2000. }
  2001.  
  2002. static void init_rtypeleo(void)
  2003. {
  2004.     install_mem_read_handler(0, 0xe0032, 0xe0033, rtypeleo_cycle_r);
  2005.     init_m92();
  2006.     m92_game_kludge=1;
  2007.     m92_spritechip=1;
  2008.     m92_irq_vectorbase=0x20; /* M92-A-B motherboard */
  2009. }
  2010.  
  2011. static void init_majtitl2(void)
  2012. {
  2013.     init_m92();
  2014. }
  2015.  
  2016. static void init_inthunt(void)
  2017. {
  2018.     install_mem_read_handler(0, 0xe025e, 0xe025f, inthunt_cycle_r);
  2019.     init_m92();
  2020. }
  2021.  
  2022. static void init_lethalth(void)
  2023. {
  2024.     install_mem_read_handler(0, 0xe001e, 0xe001f, lethalth_cycle_r);
  2025.     init_m92();
  2026.     m92_spritechip=1;
  2027.     m92_irq_vectorbase=0x20; /* M92-A-B motherboard */
  2028.  
  2029.     /* This game sets the raster IRQ position, but the interrupt routine
  2030.         is just an iret, no need to emulate it */
  2031.     m92_raster_enable=0;
  2032. }
  2033.  
  2034. static void init_nbbatman(void)
  2035. {
  2036.     init_m92();
  2037.     m92_game_kludge=2;
  2038.     m92_spritechip=1;
  2039. }
  2040.  
  2041. static void init_psoldier(void)
  2042. {
  2043.     install_mem_read_handler(0, 0xe1aec, 0xe1aed, psoldier_cycle_r);
  2044.     init_m92();
  2045.     m92_spritechip=1;
  2046.     m92_irq_vectorbase=0x20; /* M92-A-B motherboard */
  2047. }
  2048.  
  2049. /***************************************************************************/
  2050.  
  2051. /* The 'nonraster' machine is for games that don't use the raster interrupt feature - slightly faster to emulate */
  2052. GAMEX( 1991, bmaster,  0,        nonraster, bmaster,  bmaster,  ROT0,       "Irem",         "Blade Master (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2053. GAMEX( 1991, lethalth, 0,        lethalth,  lethalth, lethalth, ROT270,     "Irem",         "Lethal Thunder (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2054. GAMEX( 1991, thndblst, lethalth, lethalth,  lethalth, lethalth, ROT270,     "Irem",         "Thunder Blaster (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2055. GAMEX( 1991, gunforce, 0,        raster,    gunforce, gunforce, ROT0,       "Irem",         "Gunforce - Battle Fire Engulfed Terror Island (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2056. GAMEX( 1991, gunforcu, gunforce, raster,    gunforce, gunforce, ROT0,       "Irem America", "Gunforce - Battle Fire Engulfed Terror Island (US)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2057. GAMEX( 1992, hook,     0,        nonraster, hook,     hook,     ROT0,       "Irem",         "Hook (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2058. GAMEX( 1992, hooku,    hook,     nonraster, hook,     hook,     ROT0,       "Irem America", "Hook (US)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2059. GAMEX( 1992, mysticri, 0,        nonraster, mysticri, mysticri, ROT0,       "Irem",         "Mystic Riders (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2060. GAMEX( 1992, gunhohki, mysticri, nonraster, mysticri, mysticri, ROT0,       "Irem",         "Gun Hohki (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2061. GAMEX( 1992, uccops,   0,        raster,    uccops,   uccops,   ROT0_16BIT, "Irem",         "Undercover Cops (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2062. GAMEX( 1992, uccopsj,  uccops,   raster,    uccops,   uccops,   ROT0_16BIT, "Irem",         "Undercover Cops (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2063. GAMEX( 1992, rtypeleo, 0,        raster,    rtypeleo, rtypeleo, ROT0_16BIT, "Irem",         "R-Type Leo (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2064. GAMEX( 1992, majtitl2, 0,        raster,    majtitl2, majtitl2, ROT0_16BIT, "Irem",         "Major Title 2 (World)", GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL )
  2065. GAMEX( 1992, skingame, majtitl2, raster,    majtitl2, majtitl2, ROT0_16BIT, "Irem America", "The Irem Skins Game (US set 1)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2066. GAMEX( 1992, skingam2, majtitl2, raster,    majtitl2, majtitl2, ROT0_16BIT, "Irem America", "The Irem Skins Game (US set 2)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2067. GAMEX( 1993, inthunt,  0,        raster,    inthunt,  inthunt,  ROT0_16BIT, "Irem",         "In The Hunt (World)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2068. GAMEX( 1993, inthuntu, inthunt,  raster,    inthunt,  inthunt,  ROT0_16BIT, "Irem America", "In The Hunt (US)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2069. GAMEX( 1993, kaiteids, inthunt,  raster,    inthunt,  inthunt,  ROT0_16BIT, "Irem",         "Kaitei Daisensou (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2070. GAMEX( 1993, nbbatman, 0,        raster,    nbbatman, nbbatman, ROT0,       "Irem America", "Ninja Baseball Batman (US)", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_NO_COCKTAIL )
  2071. GAMEX( 1993, leaguemn, nbbatman, raster,    nbbatman, nbbatman, ROT0,       "Irem",         "Yakyuu Kakutou League-Man (Japan)", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_NO_COCKTAIL )
  2072. GAMEX( 1993, psoldier, 0,        psoldier,  psoldier, psoldier, ROT0_16BIT, "Irem",         "Perfect Soldiers (Japan)", GAME_NO_SOUND | GAME_NO_COCKTAIL )
  2073.